#ifndef BDUSUARIO_H
#define BDUSUARIO_H

#include <algorithm>
#include <fstream>
#include <jsoncpp/json/json.h>
#include <string>
#include "Constantes.h"
#include "Configuracion.h"
#include "Usuario.h"

#define ARCHIVO_USUARIOS "./modelo/archivos/usuarios.json"

class BDUsuario {
  public:
    BDUsuario();
    virtual ~BDUsuario();

    void setEstado(int e);
    /* Guarda o actualiza usuario. En caso de ser nuevo se le asigna UID */
    int guardar(Usuario &usuario);
    int buscar(std::string nombre, Usuario **usuario);
    int persistir();
    void imprimir();
    std::string aString();

    /* Elimina archivo de usuarios */
    static void reiniciar();
    
    int cargar();
  private:
    
    int estado;
    std::fstream a_usuarios;
    Json::Value j_usuarios;
    int uid_counter;
};

#endif
